﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://www.nowcoder.com/practice/4c0419eb07c840ca8402e4f2a52cfd49?tpId=308&tqId=40489&ru=/exam/oj
/*
题目描述：
给出一个有
n
n种字符组成的字符串，其中第
i
i种字符出现的次数为
a
i
a
i
​
 。请你对该字符串应用哈夫曼编码，使得该字符串的长度尽可能短，求编码后的字符串的最短长度。
输入描述：
第一行输入一个整数
n
n (
1
≤
n
≤
2
⋅
1
0
5
1≤n≤2⋅10
5
 )，表示字符种数。
第二行输入
n
n个整数
a
i
a
i
​
  (
1
≤
a
i
≤
1
0
9
1≤a
i
​
 ≤10
9
 )，表示每种字符的出现次数。
输出描述：
输出一行一个整数，表示编码后字符串的最短长度。
示例1
输入：
3
1 2 3
复制
输出：
9
复制
说明：
三种字符的哈夫曼编码分别为["00","01","1"]时，长度最短，最短长度为9。
*/

#include <functional>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

int main() {
    int n = 0;
    scanf("%d", &n);
    int x = 0;
    priority_queue<long long, vector<long long>, greater<long long>> heap;
    while (n--) {
        scanf("%d", &x);
        heap.push(x);
    }
    long long ret = 0;
    while (heap.size() > 1) {
        long long a = heap.top(); heap.pop();
        long long b = heap.top(); heap.pop();
        ret += a + b;
        heap.push(a + b);
    }
    printf("%lld\n", ret);
    return 0;
}